﻿using System;
using System.Windows.Forms;
using EntitiesAndMappings.Entities;
using ProyectoActivos.Daos;
using ProyectoActivos.Dtos;
using ProyectoActivos.Validate;
using ProyectoActivos.Util;

namespace ProyectoActivos.Forms.Consultas
{
    public partial class FrmConsultaEntregaAPersonal : Form, IValidateForm
    {
        private EntregaEquipoDAO entregaEquipoDAO;
        public static FrmConsultaEntregaAPersonal Activo { set; get; }
        private Boolean _valido;
        public FrmConsultaEntregaAPersonal()
        {
            InitializeComponent();
            entregaEquipoDAO = new EntregaEquipoDAO();
            dGridResultado.AutoGenerateColumns = false;
            Activo = this;
        }
        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            _valido = true;
            errorProvider.Clear();

            ActionExecutor.Execute(this, delegate
                                             {
                                                 ConsultaEntregaEquipoParams parametros = new ConsultaEntregaEquipoParams
                                                                                              {
                                                                                                  Apellidos =
                                                                                                      txtApellidos.Text,
                                                                                                  Nombres =
                                                                                                      txtNombres.Text,
                                                                                                  FechaDesde =
                                                                                                      datFechaDesde.
                                                                                                      Value.Date,
                                                                                                  FechaHasta =
                                                                                                      datFechaHasta.
                                                                                                      Value.Date,
                                                                                              };

                                                 if (cmbArticulo.SelectedItem != null)
                                                 {
                                                     parametros.IdArticulo = ((Articulo)cmbArticulo.SelectedItem).Id;
                                                 }

                                                 if (cmbLote.SelectedItem != null)
                                                 {
                                                     parametros.IdLote = ((Lote)cmbLote.SelectedItem).Id;
                                                 }

                                                 if (cmbLugar.SelectedItem != null)
                                                 {
                                                     parametros.IdLugar = ((Lugar)cmbLugar.SelectedItem).Id;
                                                 }

                                                 if (cmbProyecto.SelectedItem != null)
                                                 {
                                                     parametros.IdProyecto = ((Proyecto)cmbProyecto.SelectedItem).Id;
                                                 }

                                                 var resultado = entregaEquipoDAO.Consultar(parametros);

                                                 dGridResultado.DataSource = resultado;
                                             });
        }

        private void FrmConsultaEntregaAPersonal_Load(object sender, EventArgs e)
        {
            var articuloDAO = new ArticuloDAO();
            cmbArticulo.DataSource = articuloDAO.ListarTodos();
            cmbArticulo.SelectedItem = null;

            var loteDAO = new EntidadGenericaDAO<Lote>();
            cmbLote.DataSource = loteDAO.ListarTodos();
            cmbLote.SelectedItem = null;

            var lugarDAO = new EntidadGenericaDAO<Lugar>();
            cmbLugar.DataSource = lugarDAO.ObtenerActivos();
            cmbLugar.SelectedItem = null;

            var proyectoDAO = new EntidadGenericaDAO<Proyecto>();
            cmbProyecto.DataSource = proyectoDAO.ListarTodos();
            cmbProyecto.SelectedItem = null;


        }

        private void tStripButtonExportarAExcel_Click(object sender, EventArgs e)
        {
            if (dGridResultado.Rows.Count > 0)
            {
                ActionExecutor.Execute(this, delegate
                {
                    ExcelUtils.ExportarGridAExcel(dGridResultado);
                });
            }
        }

        private void FrmConsultaEntregaAPersonal_FormClosing(object sender, FormClosingEventArgs e)
        {
            Activo = null;
        }

    }
}
